home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / TOOLS / GAME_PGM.ZIP / GAMES.ASC < prev   
Encoding:
Text File  |  1989-02-25  |  42.1 KB  |  759 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                    THOUGHTS ON THE PROGRAMMING OF GAMES
  13.  
  14.                                  An essay
  15.                                     by
  16.  
  17.                               Robert Gellman
  18.                           431 Fifth Street, S.E.
  19.                           Washington, D.C. 20003
  20.  
  21.                      (C) Copyright 1989 Robert Gellman
  22.  
  23.  
  24.           Individuals are granted a license to copy this document
  25.           provided that no fee is charged.  No other use may be
  26.           made without the express written consent of the author.
  27.  
  28.  
  29.                                    *****
  30.  
  31.  
  32.      FORWARD - by Nelson Ford, Public (Software) Library:  Robert Gellman
  33. is an outstanding games programmer.  We have been happy to have been
  34. associated with him and have many of his games in the PSL. They are all
  35. top-notch.  This document is sort of a "Programmer's Guide" for games
  36. programmers and will be added to disk 1-PG-233, the actual Programmer's Guide
  37. disk from the PSL (1-800-2424-PSL).  If you are interested in marketing your
  38. programs, be sure to read the Programmer's Guide.
  39.  
  40.                                    *****
  41.  
  42.  
  43.      INTRODUCTION - I have been a user and programmer of shareware and
  44. freeware computer games for several years.  As a programmer, I know how
  45. exacting it can be to design a workable, fun game.  Those who do not write
  46. programs take features like clear screens, high score tables, and game flow
  47. for granted.  They do not understand the exacting (and often unexciting)
  48. decision making involved in designing the games, the screens, the order of
  49. keystrokes, etc.
  50.  
  51.      Unfortunately, it seems that some programmers don't understand these
  52. points either.  I have found it necessary to discard many interesting games
  53. because of defects, lapses, and mistakes.  Some programmers get so tied up
  54. in their own programming that they do not consider how users will react to
  55. the game.  I have been guilty of this myself at times.
  56.  
  57.      What makes a game interesting or addictive?  What features are so
  58. annoying that they inhibit registration?  This memo is my attempt to share
  59. my own views -- my own prejudices -- on game play and programming.  If it
  60. helps you, fine.  If you disagree, thanks for listening.  If you want to
  61. pick a fight, please write to me.
  62.  
  63.  
  64.  
  65.      GENERAL ADVICE - Let everybody play your game in his or her own way.
  66. Don't insist on imposing your perspective on users.  Don't assume that
  67. everyone will share your own narrow views of what is fun about the game.
  68. People will see things in your program that you didn't.  You can push
  69. people gently in the direction you want them to go, but don't be
  70. inflexible.
  71.  
  72.           Example:  I was working on a program involving the guessing of
  73.      words.  I found that one of my program testers guessed collections of
  74.      letters rather than real words.  I protested that he was "cheating".
  75.      He told me to mind my own business.  He liked playing the game HIS
  76.      way, and he didn't care what I intended.  I compromised by adding an
  77.      artificial scoring system that rewarded those who played the game the
  78.      way I intended.  Anyone who disagreed could easily ignore the score
  79.      and have fun their way.
  80.  
  81.           Example:  One of my solitaire games often reached a point where
  82.      more cards could be moved even though it was clear that victory was
  83.      impossible.  Some people quit the instant that failure was certain,
  84.      and I didn't like that.  My response was an artificial score that
  85.      rewarded both winning AND lesser progress.  This gave players an
  86.      incentive to keep playing short of victory.  Those who only care about
  87.      winning are free to ignore the score.
  88.  
  89.      Something that is important to you may not be important to the next
  90. player.  A minor feature of a program may offend a potential registrant.
  91.  
  92.           Example:  The author of a solitaire game was obsessed by the
  93.      game's statistics.  In order to preserve statistical "purity", the
  94.      author would not let you end a game in the middle.  You could save a
  95.      game in the middle, but the program created a read-only file to hold
  96.      the saved game.  This was done so you couldn't easily erase it.  I
  97.      liked the game a lot, but I didn't care about the statistics.  I was
  98.      so outraged by the creation of a read-only file for such a silly
  99.      purpose that I discarded the game rather than registering it.
  100.  
  101.      Many programmers regularly enhance their programs with new features.
  102. This can be a good thing.  The problem is that new features do not always
  103. improve a program.  Some changes just add unwanted choices and
  104. complexities, and waste bytes.  Features that are fun to program are not
  105. always fun to play.
  106.  
  107.      I have seen some practical programs and fun games grow so large and
  108. complex that I stopped using them.  A gigantic, lumbering program may lose
  109. its disk space to a small, tightly written one.
  110.  
  111.           Example:  I have several versions of GO-type games.  Two are
  112.      almost identical.  The first has on-line instructions and fancy
  113.      screens.  The second is not as fancy, but it is just as much fun.
  114.      The program is very small.  I now use the second program and save
  115.      25,000 bytes.
  116.  
  117.  
  118.      If you are writing a commercial game with a high price tag, the fancy
  119. screens and the bells and whistles might be necessary to impress potential
  120. buyers.  These glitzy features help sell games in stores.  Shareware
  121. doesn't work that way.  A user gets to play with the game over an extended
  122. period.  The user learns if the game is fun or cumbersome before paying for
  123. it.  Do you own any fancy games that sit unused because they didn't turn
  124. out to be as much fun as they looked?  How many public domain versions of
  125. commercial games do you use despite the absence of showy graphics?
  126.  
  127.           Example:  There is a game called Tetris (commercial) or Nyet
  128.      (public domain).  It is a simple game, fun to play, and extremely
  129.      addicting.  The commercial version has extraordinary graphics.  The
  130.      public domain version is sparse.  The play is virtually the same for
  131.      both games.  Once you get the hang of the game, you don't care about
  132.      the irrelevant graphics.  They add nothing to playing the game.
  133.  
  134.      WHAT GAME TO PROGRAM? - Some programmers write excellent programs, but
  135. they pick the wrong games to program.  Some games just don't lend
  136. themselves to play on a computer.  Single player games require careful
  137. selection.
  138.  
  139.           Example:  The standard solitaire game (usually called Klondike)
  140.      is not especially suited for a computer.  It requires little thought
  141.      and a lot of card movement.  There is no convenient way to designate
  142.      movements.  People have tried pile numbers, card identifiers, and
  143.      cursor keys.  All require a lot of keystrokes, and the keystrokes bog
  144.      down the game.  It is usually simpler to play the game with a real
  145.      deck of cards!
  146.  
  147.           Example:  Another solitaire game called La Belle Lucie requires
  148.      that the entire deck be dealt in fans of three cards.  Cards are
  149.      moved, and the deck is reshuffled and redealt several times.  The
  150.      computer is wonderful at shuffling and dealing repeatedly.  The player
  151.      still has to enter moves, and the designations require several
  152.      keystrokes.  Since the game requires a lot more thought than Klondike,
  153.      the keystrokes are not as noticeable.  The player is busy doing
  154.      something other than mindlessly hitting keys.
  155.  
  156.           Example:  Yet another solitaire game that is well suited to a
  157.      computer is Poker Solitaire.  The game calls for the player to place
  158.      25 cards in a five by five grid in order to make poker hands across
  159.      and down the grid.  Each hand is then evaluated and scored according
  160.      to a table of values.  It is a great game, but to play it by hand, you
  161.      have to add up the scores.  The computer handles the math in an
  162.      instant.
  163.  
  164.      I recognize that people have different tastes, and some will like
  165. games that I don't.  It is not my purpose to demean those who like Klondike
  166. solitaire.  My point is simply that some games are better suited to play on
  167. computers than others.  Repetitive tasks, comparisons, and calculations are
  168. easily done by computers.  Games are only worth computerizing when the
  169. advantages of computers outweigh the difficulty of issuing instructions.
  170.  
  171.      I have another point to make using Klondike solitaire as an example.
  172. There are many shareware or freeware versions of this game.  Unless you can
  173. do it better, why not pick another game to program?  The world just doesn't
  174. need another version of Klondike.  There are many other card games for
  175. which no computerized version exists.  Be the first one on your block . . .
  176.  
  177.      INSTRUCTIONS - There are two basic ways of providing game
  178. instructions, each with advantages and disadvantages.  The first way is to
  179. have all instructions on-line.  Instructions may be offered at the
  180. beginning of the game, during play, or both.  The main advantage is that
  181. the instructions are always available.  If you have the game file, you
  182. probably have the instructions as well.
  183.  
  184.     The drawback is that when instructions are part of the basic game file
  185. (or in a separate but required file), the game uses more disk space.  All
  186. other things being equal, the best games are small and fit in one file.
  187. This is not always possible, but it is a worthy goal nevertheless.
  188.  
  189.           Example:  A game I just reviewed has a 45000 byte instruction
  190.      file separate from the main program file.  The instruction file is not
  191.      a DOS text file and is only readable through the main program.  The
  192.      result is that I must either keep the instructions on my hard disk and
  193.      waste a lot of disk space or do without them entirely.
  194.  
  195.      Another problem is that the user may not be allowed to page through
  196. the instructions at his or her own pace.
  197.  
  198.           Example:  One game begins by asking the player if he wants
  199.      instructions.  If you say "yes", about 15 screens worth of
  200.      instructions follow.  The screens are timed and change on their own
  201.      accord rather than at the user's pace.  As a result, slow readers may
  202.      miss key instructions and fast readers are bored silly.  To make
  203.      matters worse, if you want to reread one page, you must go through the
  204.      entire set of instructions to find that page.  This wastes my time,
  205.      and I may miss the key page anyway while I am bored and waiting.
  206.  
  207.      Another consequence of on-line instructions is that it may be
  208. impossible for the user to print them out.
  209.  
  210.           Example:  One game presents instructions on the screen in
  211.      graphics mode.  They look great, but you can't even use PrintScreen to
  212.      provide a written copy.  The same instructions could have been
  213.      presented in text mode in a file that would be 75% smaller.
  214.  
  215.      Not all games lend themselves to having on-line or pop-up
  216. instructions.  Nevertheless, pop-up instructions are a very good choice if
  217. they are short.  No more than two screens of instructions should be
  218. provided, and one screen is best.  When games have on-line instructions
  219. that go on for page after page, I always feel that I am wasting disk space
  220. once I have learned the game.  Instructions are important, but they are
  221. needed for only a short period.
  222.  
  223.  
  224.      Pop-up instructions are always available to players and won't become
  225. separated from the game file.  Players can call up the instructions
  226. whenever needed (even if access must be limited during certain parts of the
  227. game).  If the instructions do not exceed two screens, the game file will
  228. only be marginally larger.
  229.  
  230.           Example:  By using a library of QuickBASIC programming tools, I
  231.      am able to include pop-up screens in my games without the need to use
  232.      graphics mode.  The tools allows me to create virtual screens.  The
  233.      result is that my games can be played on computers without graphics
  234.      cards.  File size is only a few thousand bytes larger, and my game
  235.      still requires only one file.
  236.  
  237.      The second way of including instructions is to have a separate
  238. document file.  For example, GAME.EXE may be accompanied by a GAME.DOC
  239. file.  This is a reasonable approach, especially for longer files.  A
  240. document file should always be an ASCII file that can be read by programs
  241. such as LIST, BROWSE, or even by the DOS TYPE command.  Long files intended
  242. for printing should have page breaks.
  243.  
  244.      To help those who use word processors to edit extraneous material from
  245. document files before printing, the document file should list appropriate
  246. margin settings at the beginning of the file.  Guessing at the author's
  247. margins is frustrating.  Remember that some popular laser printers cannot
  248. print on the first and last two columns of the page.  Documents with
  249. margins at 0 and 80 cannot easily be printed on these printers.  This
  250. document was created with margins of 5 and 75.
  251.  
  252.      There are programs that enable programmers to turn DOC files into COM
  253. files that are executed rather than read.  GAME.DOC becomes GAME.COM.  Upon
  254. execution, the text appears on the screen and can be scrolled through using
  255. cursor keys.  This is a cute but less attractive alternative.  The files
  256. cannot be easily reviewed or printed, and the resulting COM file will be
  257. larger than the plain DOC file.
  258.  
  259.      Perhaps the best choice is to have on-line help AND a separate, longer
  260. document file.  This is the best of both worlds.  The separate file can be
  261. discarded once the player learns the game sufficiently so that the on-line
  262. help is adequate.  A programmer who knows that the separate file is to be
  263. read and discarded can expound at greater length about the program without
  264. impinging permanently on someone else's disk space.
  265.  
  266.           Example:  I usually include a comment early on in a documentation
  267.      file stating that the file is intended for printing.  I suggest that
  268.      the user read it once or twice and then forget about it.  This way I
  269.      don't feel guilty about including a history of my program that
  270.      interests no one but me.
  271.  
  272.      Yet another approach is to make the rules available but not mandatory.
  273. I like to program my games so that the initial screen allows a choice.
  274. Players can skip the rules by hitting the space bar or review the rules by
  275. hitting ENTER.  The space bar is a great switch because it is so easy to
  276. hit.  This is simpler than making the player answer the "Instructions
  277. (Y/N)?" question each time.
  278.      FILE NAMES - If a program requires more than one file or creates extra
  279. files on its own, all files should have a common name.  For example, if
  280. GAMES.EXE has other files, the first part of the name should be GAMES.
  281. Other files might be GAMES.DOC, GAMES.PIC, GAMES.HLP, GAMES.TXT, and
  282. GAMES.SCR.  This keeps all files together in a standard sorted directory
  283. listing.  The user knows immediately by the name which files go together.
  284. This helps immensely when one person passes the game on to another.
  285.  
  286.      FILE CREATION - Some games require only one file; some games need 50
  287. files.  One file is best, but not always possible.  Some games create files
  288. along the way to save high scores, setup information, and other records.
  289. Keep the number of these files to a minimum.  Don't litter your user's disk
  290. with endless tiny files.
  291.  
  292.           Example:  One excellent poker game created several tiny files to
  293.      hold high scores, setup information, statistical data, and a history
  294.      of play.  The history file was only a few bytes long, and the other
  295.      files were small as well.  The files could have been combined in a
  296.      single file.  As an alternative, the author did allow a player to turn
  297.      off some of the files.  That was good, but in order to turn off the
  298.      record keeping, a permanent, tiny setup file had to be written to disk
  299.      with the instructions.  Win some, lose some.  A default for "no files"
  300.      would have been welcome.
  301.  
  302.      HIGH SCORE TABLES - Some games allow players to save a record of their
  303. best efforts in high score tables.  The availability of a high score table
  304. can be a CRUCIAL element in the success of a game.  It offers a player an
  305. immediate and obtainable goal:  put a score in the high score table.  The
  306. ability to record high scores and to improve upon them over time can make a
  307. game addicting.  Games that lend themselves to keeping scores should
  308. include a high score table.  I have discarded perfectly good games because
  309. the absence of a high score table diminished my interest in the game.
  310.  
  311.           Example:  I got a public domain arcade game from a friend, along
  312.      with his high score table.  He was an experienced player, and his
  313.      scores were high.  I played the game for a while, but I didn't even
  314.      come close to making the high score table.  I decided the game was not
  315.      too interesting.  When I learned how to blank out the table, I started
  316.      playing again and did nothing else for three weeks straight.  The
  317.      ability to see success in the high score table transformed the game
  318.      into an addicting challenge.  I beat my friend's scores in three days.
  319.  
  320.      There are several aspects of high score tables to be discussed.
  321. First, how many scores should be maintained?  One game I played saves 40
  322. scores.  The problem is that you have to play the game 40 times before you
  323. run the risk of not having a score in the table.  That is too easy.
  324.  
  325.      Another game saves only one score.  That is frustrating in its own
  326. way.  A stupendous but second-best effort warrants no recognition.  It
  327. becomes so hard to beat a once-in-a-lifetime score that a player may stop
  328. playing.  This will happen eventually, but if there are more scores, the
  329. frustration of failure is postponed longer.
  330.  
  331.      I think that 10 scores is a good choice, but not the only choice.
  332. Some games offer two high score tables:  a daily table and a permanent
  333. table.  This allows two different opportunities for success.  The daily
  334. table disappears when the user quits the program; good scores live on to be
  335. beaten another day.
  336.  
  337.      Another important point is providing the ability to wipe out the
  338. scores in the table to accommodate a new player or just to start again.
  339. Some games offer switches to wipe out the scores.  This is fine as long as
  340. an accidental erasure is not likely.  A player can develop a real sense of
  341. "investment" in a high score table, and doesn't want the scores to
  342. disappear easily.
  343.  
  344.      Some games tolerate the erasure of the file itself.  If no high score
  345. file is found on the disk, the necessary file is created.  This is a
  346. reasonable approach.  But some games will not work if the high score file
  347. is missing.  They can write to -- but not create -- the necessary file.  In
  348. these cases, it may take a byte editor to remove old, unwanted high scores.
  349. This should be avoided since not all users are so sophisticated.
  350.  
  351.      Another nice touch is placing a single score in an otherwise empty
  352. table as a target for new players.  Don't fill up the table so that new,
  353. low scores will be crowded out.  A medium score (for a good player) at the
  354. top of the table will seem almost unattainable to a new player.  When that
  355. score is surpassed, there is a real sense of accomplishment.  The next
  356. goal, of course, is to have all scores higher than the original target.
  357.  
  358.      Some players may not want to litter their disks with a permanent table
  359. or may want to "protect" the table from others.  Consider asking whether
  360. the player wants to record high scores in a table.  The question can be
  361. asked once per session, preferably at the conclusion of the first game.
  362.  
  363.      Since a file uses a minimum of 1000 bytes on a floppy and 2000 bytes
  364. on a hard disk, a table has plenty of room for information before it grows
  365. beyond minimum size.  I mentioned above a game that has 40 scores in its
  366. table and another that has only one.  Both use the same 2000 bytes on my
  367. hard disk.  I prefer tables that automatically include the date each game
  368. was played.  This helps to track "progress" and feeds the addiction that a
  369. good game engenders.  The date can be added to most tables at no increase
  370. in file size.
  371.  
  372.      One small note to remember is that many high score tables are used
  373. exclusively by the same player.  The same name or initials appear on each
  374. of the scores, and the same date may also appear.  Make sure that a new
  375. entry in the list is highlighted so that it can be spotted easily.  After I
  376. enter my initials and the score is placed in its rightful spot in the list,
  377. I may forget exactly which score I just achieved.
  378.  
  379.      The name for the high score file should be the same as the name of the
  380. program file with a separate extension.  This permits instant
  381. identification of the table with the game in the event that the files are
  382. moved or erased.
  383.  
  384.           Example:  I have several files in my arcade directory with names
  385.      like HISCORE, WINNERS, GATEWAY.BBS, etc.  I do not know which file
  386.      belongs to which program.  Some may belong to games long since
  387.      discarded, but I can't be sure.  If the file contents are not in ASCII
  388.      text -- scores are usually integers and not stored in ASCII -- I can't
  389.      even TYPE or LIST the file to read the numbers.  Of course, I can't
  390.      change the file names because a program won't find the table under an
  391.      assumed name.
  392.  
  393.      Finally, some tables allow space for a winner to enter a 15 or 20
  394. character name.  Some just allow three initials.  Either is acceptable.
  395. Make sure that you allow the user to backspace over a mistake.  Some
  396. programs record the ASCII symbol for CHR$(8) when you hit a backspace, and
  397. there is no way to get rid of it.  Allow all letters, characters, and
  398. symbols to be entered.  Don't assume that everyone will want to use the
  399. field you have provided in the way that you intended.  I like to put in the
  400. date, but some programs won't accept numbers or slashes.
  401.  
  402.      Also, I don't like programs that ask players their name at the
  403. beginning.  It gives a program a very old fashioned look.  A program that
  404. asks "What's your name?" harkens back to the old days -- say 1984 or so.
  405.  
  406.      SOUNDS - Games are often embellished with sounds that reflect the
  407. action.  With few exceptions, the sounds grow very annoying very rapidly.
  408. This is especially true for music.  The constant repetition can drive you
  409. crazy -- and anyone else in the same room or house.  I only know of one
  410. game whose sounds I don't suppress.  (It's Willy the Worm I, if you must
  411. know.  The sounds are cute, related to the action, and very low-keyed.)
  412.  
  413.      Include a sound switch.  There are two types to consider.  First is a
  414. switch set when the program starts that will eliminate all sounds during
  415. the current session.  A player who wants to play at 4 a.m. should be able
  416. to start and run the game in silence.  The default should be for no sound.
  417.  
  418.      This will annoy programmers who put in sounds to dress up their
  419. programs.  Everyone thinks his sounds are great and wants to make sure that
  420. others hear them.  Yet I am willing to bet that most programmers find the
  421. noise sufficiently annoying that they kill the sounds during program
  422. testing.  Give your user the same option.  I have discarded many programs
  423. simply because there was no way to silence them.  It is a shame to drop a
  424. perfectly good program (and see a programmer lose a customer) over such a
  425. small point.
  426.  
  427.      A second type of sound switch toggles sound on and off in the middle
  428. of the game.  This is good, but can be more complex to program.  Do it if
  429. possible.  It lets the user listen once or twice and then stop the music.
  430.  
  431.      Many programs need sounds to signal mistakes.  Sounds can be better
  432. than screen messages for this purpose.  Some programmers use the standard
  433. DOS BEEP.  This is a long, loud, and obnoxious sound, and I hate it.  I
  434. have discarded an occasional program rather than face an evening of BEEPs.
  435. I just found -- and immediately erased -- a game that signaled a mistake
  436. with three consecutive BEEPs.  I didn't even finish one test game.
  437.  
  438.      If you need a sound, find an alternative to BEEP.  In BASIC, I have
  439. found that the command SOUND 5000,.5 produces a short, low level sound.  It
  440. gets your attention, but it won't wake up the neighbors.  Shorter sounds
  441. may work as well.  You can get a barely noticeable click with SOUND,
  442. 10000,.04.  Play (pun intended, for BASIC programmers at least) around with
  443. sounds.  Take note (this is contagious!) when programming.
  444.  
  445.      WHERE ARE YOU? - A programmer should include his or her name and
  446. address on one of the game screens.  Shareware authors do this, of course,
  447. but freeware authors should do it as well.  I occasionally want to contact
  448. authors to point out a problem or make a suggestion, but some programmers
  449. don't tell me where to write.  Don't expect everyone to have access to
  450. Compuserve.
  451.  
  452.      The address can be an optional screen somewhere, but don't expect
  453. everyone to wade through the documentation to find your address.  If you
  454. want to hear from users, make it easy for them.  How else are you going to
  455. get error reports?  You didn't really think your program was bug free, did
  456. you?
  457.  
  458.      KEYSTROKES - One of the most important rules for game programming is
  459. that keystrokes should be minimized.  Unnecessary keystrokes can undermine
  460. the best game.  Don't ask the player to hit keys to tell the computer
  461. something that the computer can figure out on its own.
  462.  
  463.           Example:  I found a solitaire card game only permits building
  464.      card by suits.  The 8 of spades can only go on the 9 of spades.
  465.      Nevertheless, to move that 8 to the 9, you had to enter:  8S9S.
  466.      Because of the way the game worked, it was unnecessary to specify the
  467.      9S.  Either the card goes to the 9S or the move is improper.  Since
  468.      the programmer released the source code for the program, I was able to
  469.      rewrite it to eliminate the unnecessary keystrokes.  It speeded up
  470.      play enormously.
  471.  
  472.           Example:  Another program requires action by the player followed
  473.      by messages from the computer.  To clear each message, the player has
  474.      to hit a key.  This brings up the next message.  Hit another key and a
  475.      third message appears.  All three messages are short and would fit on
  476.      one screen.  The same circumstances happen over and over again during
  477.      the game, and the repeated keystrokes soon grow to be wearisome.
  478.  
  479.      One keystroke often not considered by programmers is the ENTER key.
  480. When a player is offered a choice of Yes or No, there is usually no reason
  481. to have to hit the Y or N plus the ENTER key.  Hitting Y alone is enough.
  482. This also works for menus.  This saves a lot of extra work for players and
  483. speeds up play.
  484.  
  485.           Example:  One text editor I tested asked for confirmation before
  486.      executing a destructive command.  That is perfectly acceptable.
  487.      However, the program demanded that the user hit Y and then ENTER.
  488.      This grew very tiresome very fast, and I dropped the program
  489.      altogether.  I probably would have registered it otherwise.  Major
  490.      decisions (like registration) can turn on very small points.
  491.  
  492.      However, sometimes the ENTER key is necessary on its own because the
  493. input length is variable.  Sometimes the ENTER key serves another purpose.
  494. It becomes a confirmation key, a final opportunity for the player to review
  495. the input (assuming it is visible on the screen) and make a change.  This
  496. use of ENTER is acceptable if it is important or necessary.
  497.  
  498.      Some programmers actually forget that many players use a keyboard.
  499. Anyone who routinely uses a mouse may overlook keyboard problems.
  500.  
  501.           Example:  A wonderful game that required players to designate
  502.      coordinates on the screen identified both X and Y coordinates with a
  503.      letter/number combination.  Thus, a particular spot on the board was
  504.      entered as A1,Z1.  This took a lot of keystrokes.  I suggested to the
  505.      author that the program be redone so that the X coordinates could be
  506.      marked with a letter and the Y coordinates with a number.  This cut
  507.      the number of keystrokes by half.  The author liked the suggestion and
  508.      adopted it.  He explained that he and his friends all used mice and
  509.      didn't think about keyboard play!
  510.  
  511.      Another aspect of defining user input is the combination of keys
  512. required and the fingers required to enter the combinations.  It is basic
  513. but worth mentioning that logical and convenient combinations be used.
  514. Don't ask your user to reach all over the keyboard when playing an intense
  515. arcade game.  People only have two hands!  If you need to keep your right
  516. hand on the cursor keys and your left hand on A-W-S-Z, it is very hard to
  517. hit number keys.  Don't ask your users to do the impossible.
  518.  
  519.      Remember as well that there are many different types of keyboards.  If
  520. you are programming an action game, consider whether it is a good idea to
  521. ask a player to hit the F10 key.  For some, this key is easy to find with
  522. the left hand.  With newer keyboards, it is hard to hit F10 with the left
  523. hand.  I recommend that the function keys be avoided if possible unless the
  524. key can be struck at leisure rather than during an attack by aliens.
  525.  
  526.      One of the best all-purpose keystrokes is the space bar.  It is the
  527. biggest key on the board and the easiest to hit.  I use it as much as
  528. possible.  For example, I often ask the player to hit ENTER or space bar to
  529. continue.
  530.  
  531.      Finally, try to make the keystrokes consistent and easy to remember.
  532. If possible, use one general key for the same purpose throughout.  Use the
  533. escape key, for example, as a general cancellation key.  Use the space bar
  534. as a general acceptance key.  Just don't have the same key do different
  535. things at different times.  It is too confusing.
  536.  
  537.      SPEED - Speed kills many arcade programs.  A game that is just perfect
  538. on a PC may not be playable on an AT.  Computers operate at so many
  539. different speeds now that new arcade game authors must take speed into
  540. account.  Learn how to adjust the speed of your game automatically.  No one
  541. will register a game that is too fast or too slow for his machine.  I
  542. occasionally run a slowdown program so that I can play an especially
  543. intriguing game.  Still, I am not likely to register a game when I have do
  544. some of the work.  More often, I have discarded games with great regret
  545. because of speed problems.
  546.      COLOR AND GRAPHICS - Some games require either color or graphics or
  547. both.  Color or graphics can be an essential element of the game.  If that
  548. is the case, then so be it.  But many games demand color or graphics when
  549. they could run just as well in text mode on a monochrome monitor.
  550.  
  551.      I don't understand why some shareware authors unnecessarily limit the
  552. market for their products by using color when it is not necessary.  For
  553. some games, clever programming can provide graphics-type effects in text
  554. mode.
  555.  
  556.           Example:  I program games that use playing cards.  I have learned
  557.      how to draw cards using text boxes.  The result is that the program
  558.      looks good and will run on any type of monitor.  The use of graphics
  559.      would produce a better looking card, but the game would still be the
  560.      same.  And the play is the thing that sells programs.  Glitz and color
  561.      won't save a bad game.
  562.  
  563.      The best of both worlds is to be ambidextrous.  Provide color for
  564. those with color monitors and allow black and white for those without.
  565. This flexibility can be provided very easily, and without significantly
  566. increasing the size of your program.  It is also easy to find code that
  567. will enable the program to tell what kind of monitor is being used.  There
  568. is no reason to ask the user if the monitor supports color.
  569.  
  570.      A recent trend is the programming of games that require an EGA (or a
  571. mouse).  The same considerations apply here as well.  Don't limit your
  572. market unless it is necessary (and it is much of the time).
  573.  
  574.           Example:  I recently saw a game that required both an EGA and a
  575.      mouse.  How many computers have both?
  576.  
  577.      Having made this point, I feel obliged to recognize that some games
  578. are created by programmers for their own systems.  Sharing them with the
  579. world is a secondary consideration.  Other games really require an EGA and
  580. a mouse.  Just don't complain if you don't get any registrations!
  581.  
  582.      EXITS - I am not sure that it is still necessary to remind programmers
  583. that they must provide an exit to DOS.  It is absolutely unreasonable to
  584. expect a user to reboot to leave your game.  There are other exit issues
  585. that need to be discussed.
  586.  
  587.      First, for arcade type games, include a switch that will let the
  588. player pause the action when the phone rings.  Pick something easy to
  589. remember that doesn't require the fingers to move too far from your game's
  590. home keys.  If it's not otherwise in use, the Escape key is a good choice.
  591. Besides being able to resume the game from the paused state, a player
  592. should also be able to exit to DOS as well.
  593.  
  594.      Games that are not time sensitive (e.g., a solitaire game) do not need
  595. pause switches.  They should still allow players to exit to DOS from any
  596. point in the game.  I hate it when I am faced with the choice of rebooting
  597. or continuing to play a game when I don't want to any more.
  598.  
  599.      Second, I like games that allow me to restart from the beginning
  600. whenever I want without exiting to DOS.  I may be playing an arcade game
  601. and I know that I need to score 5000 points with my first man in order to
  602. do well.  Yet here I am, two men down with only 1500 points.  I want to
  603. stop this game and go back to the beginning to try again.  Give me that
  604. option.  The need for this option is not limited to arcade games.  If you
  605. want to discourage this conduct, include an exit switch and an average
  606. score feature.
  607.  
  608.      Third, I want to make the same point another way.  I have found some
  609. games that do not allow you to have a replay without a visit to DOS.
  610.  
  611.           Example:  I recently found a very creative Breakout-type game.
  612.      There was a multi-step sign-on process (including a sound switch and
  613.      an instruction screen with a welcome bypass) that asked the player to
  614.      select a skill level.  When the game was over, you were dumped back to
  615.      DOS.  To play again, you had to go through the entire sign-on process
  616.      again.  This is a sure cure for addiction.
  617.  
  618.      I prefer games that include a "Play again" switch at the end, with a
  619. default for another game.  One way to do this is to ask the player to hit
  620. "Q" to quit or to hit any other key to play again.  For the player, this
  621. makes it easy to keep playing.  For the programmer, it helps to foster
  622. addiction by players.  Playing again becomes the path of least resistance
  623. (I know it's 3 a.m., but just ONE more game).  If the game has skill
  624. levels, the player could be asked to hit a different key to change the
  625. default level.  Then it becomes Q to quit, D to change defaults, and any
  626. other key to play again.
  627.  
  628.      MESSAGES - I have found different opinions about the types of messages
  629. included in games.  Some people like a little personality in the games;
  630. others are offended by a taunt or insult from a program.  I am not sure
  631. that I have any firm advice to offer.  Still, there are some things I like
  632. and some I hate.
  633.  
  634.           Example:  When a player won a game (an old NIM program), the
  635.      computer stopped before its final losing move and flashed the message
  636.      "You must have cheated".  I found this to be obnoxious, especially in
  637.      a game aimed at kids.  Be a good sport when your program loses!
  638.  
  639.           Example:  The cutest messages I ever saw were on a GO-type game.
  640.      When the computer won, the message was "Computers are superior".  When
  641.      the player won, the message was "Humans are lucky".  The first message
  642.      conveys the mildest of taunts; the second suggests an all too human
  643.      annoyance at being beaten.  These messages always bring a smile.
  644.  
  645.           Example:  My own poker program taunts a losing player by
  646.      occasionally asking "Another game, sucker?"  This generated a couple
  647.      of complaints.  I kept the messages (it's my program, after all), but
  648.      I decreased the frequency.  It would probably be better to allow the
  649.      message to appear only once or twice in a session rather than
  650.      repeatedly.  These type of comments wear out their welcome quickly.
  651.  
  652.      I also like it when I win a game and get a "reward" in the form of a
  653. cute message or colorful display.  A musical serenade is less welcome.  I
  654. find it mildly disappointing to win a hard game after many tries only to
  655. get the same old "Play again?" message.  This is not a big deal, but I like
  656. a little recognition from the programmer that I have mastered the game.
  657.  
  658.      For a game that produces a score (i.e., play until you die) rather
  659. than a clear victory, scaled messages can be fun.  For new players just
  660. learning how to play, the appearance of a heretofore unseen congratulatory
  661. message is a mark of progress.  One of the best messages I ever saw was the
  662. first in such a series from a great arcade game.  When you got a very low
  663. score, the message was "What's the matter?  Didn't you read the
  664. instructions?"  This was especially telling when, in fact, I had begun
  665. playing without reading the instructions.
  666.  
  667.      All messages get old pretty quickly.  Even if you include a large
  668. number of different, randomly selected messages, they will all become
  669. routine in short order.  Include them anyway if you like, but don't let
  670. them get in the way.  Don't require an extra keystroke to bring up or
  671. eliminate the message.  Don't let your message become a pain or an
  672. impediment.  Allow it to be ignored.
  673.  
  674.      COMMAND LINE SWITCHES - Don't use command line switches for anything
  675. important.  No one will remember what your switches mean.  If you have
  676. multiple options, set defaults and offer a menu instead.  A single command
  677. line switch aimed at adapting the program for use by a small class of users
  678. is not unreasonable.
  679.  
  680.           Example:  One game I liked had half a dozen important command
  681.      line switches.  You even had to use a switch to have the option to
  682.      play more than one game at a time.  I could never remember which
  683.      switch was which, and I tired of it very quickly.
  684.  
  685.      The use of environmental variables is an alternative to command line
  686. switches.  I hate to use environment space for games that I may play only
  687. from time to time, but I will if I like the game.  I probably won't learn
  688. your command line switches.
  689.  
  690.      SPELLING - Game displays, instructions, and documents often contain
  691. words that are misspelled.  I estimate that two out of three programmers
  692. don't know the difference between "its" and "it's".  For those of us who do
  693. know the difference, these mistakes are jarring.  One solution is simple.
  694. Run your document files through a spell checker.  Have some one else read
  695. them for sense, spelling, and grammar.
  696.  
  697.      I asked two people to read this document before I released it.  I also
  698. spell checked it many times, and I even ran it through a grammar checker.
  699. Each review identified some errors.  No one is perfect, and mistakes can
  700. slip by any of us.  But too many programmers give the impression that they
  701. didn't even try.
  702.  
  703.  
  704.  
  705.      PRICE - How many players register shareware games?  I haven't a clue.
  706. The games I have written are all freeware.  I have registered a few games,
  707. but not that many.  After all, you tend to play a game intensively for a
  708. while and then move on to the next one.  Remember Atari video games!
  709. Novelty is very important.  When was the last time you played Pitfall?
  710.  
  711.      If you are trying to earn money through shareware games, the trick is
  712. to get the user to register during that period of intense play.   One thing
  713. that inhibits registration is price.  Some games are exorbitant.
  714.  
  715.           Example:  I recently found a good snake game.  There are many of
  716.      this type of game around, but this one was superior.  The author wants
  717.      $25 for it!  There is no way that I would pay that much for a game,
  718.      and I declined to get the enhanced game that came with registration.
  719.      I would have paid five or ten dollars.
  720.  
  721.      Shareware should be cheaper than commercial software because there are
  722. no fancy packages, retailers or distributors.  The programmer is just as
  723. well off because he keeps all the money.  Games (and other shareware)
  724. should be priced to reflect this.  You can buy some major commercial games
  725. for $25 or less.
  726.  
  727.      I believe that the price of a shareware game should not exceed $10
  728. unless the game is extraordinary in some way.  It is easier to get someone
  729. to stick a five or ten dollar bill (or check) in an envelope during the
  730. period of intense preoccupation with a game.  A lower price may have other
  731. benefits as well.
  732.  
  733.           Example:  Last year, I found a stunning game on a bulletin board.
  734.      I registered it immediately for $5.  I even told the author that the
  735.      game was worth twice that.  I was so impressed that I uploaded the
  736.      game on many bulletin boards, with a rave review.  I never would have
  737.      done any of this for a $25 game.  The author reported that the word-
  738.      of-mouth advertising increased registrations considerably.
  739.  
  740.      I think that much non-game shareware is also too expensive.  I will
  741. pay as much as $25 for a major program (such as a text editor or DOS shell)
  742. that I use regularly.  While I have spent a few hundred dollars on
  743. shareware, I have yet to find a program worth more than $25.  I don't need
  744. or use the semi-commercial shareware like PC-Write that has a very high
  745. price but also has real support.
  746.  
  747.      I am reluctant, however, to pay much (or at all) for small utilities
  748. that offer minor improvements and that will likely be superseded by better
  749. programs.  I have seen at least ten different WHEREIS programs.  Why should
  750. I pay you $20 because your program is 5 percent faster?  Nevertheless, I
  751. have been known to send $5 for a well done utility that fully meets a need.
  752. That is about the limit for small utility programs.
  753.  
  754.      A last thought on price:  The amount of work that you put into a
  755. program has nothing to do with its value to me.  Look at the market; look
  756. at the competition.  If there are seven public domain Klondike solitaire
  757. games out there, you will be hard pressed to explain why your version is
  758. worth my money.
  759.